//构造方法Array.from()
//将伪数组或者可遍历对象转换为真正的数组

let arrayLike = {
  '0': 'a',
  '1': 'b',
  '2': 'c',
  length: 3
}
let arrayTrue = Array.from(arrayLike);
console.log(arrayTrue); //[ 'a', 'b', 'c' ]
//Array.from();还可以接受第二个参数，作用类似于数组的map方法，用来对每个元素进行处理，将处理后的值放入返回的数组
let newArrayTrue = Array.from(arrayLike, item => item + '666');
console.log(newArrayTrue); //[ 'a666', 'b666', 'c666' ]


//实例方法 .find()   
//用于找到第一个符合条件的数组成员，如果没有就返回undefined
let arr = [{ id: 1, name: 'zs' }, { id: 2, name: 'ls' }];
let tar = arr.find((item, index) => item.id === 1);
console.log(tar);

//实例方法  .findIndex()
//找到第一个符合条件的数组成员的位置，如果没有找到就返回-1
let arr1 = [1, 5, 3, 3, 1, 123]
let index = arr1.findIndex((value, index) => value > 3);
console.log(index); //1

//实例方法  .includes()
//表示某个数组是否包含给定的值,返回布尔值
console.log([1, 3, 4, 5, 6].includes(2)); //false
console.log([1, 3, 4, 5, 6].includes(3)); //true

//indexOf()
// arr.indexOf(searchElement[, fromIndex])
/* 
参数
searchElement
要查找的元素
fromIndex 可选
开始查找的位置。如果该索引值大于或等于数组长度，意味着不会在数组里查找，返回-1。如果参数中提供的索引值是一个负值，则将其作为数组末尾的一个抵消，即-1表示从最后一个元素开始查找，-2表示从倒数第二个元素开始查找 ，以此类推。 注意：如果参数中提供的索引值是一个负值，并不改变其查找顺序，查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于0，则整个数组都将会被查询。其默认值为0.
*/

/* 
返回值
首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1
*/

var array = [2, 5, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0

//找出指定元素出现的所有位置
var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array.indexOf(element);
while (idx != -1) {
  indices.push(idx);
  idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]